//
//  LyricTool.m
//  LO_MUSIC
//
//  Created by 向祖华 on 16/2/27.
//  Copyright © 2016年 杨少锋. All rights reserved.
//

#import "LyricTool.h"
static LyricTool*lyTool = nil;

@implementation LyricTool

//初始化
+(instancetype)ShareLyTool{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        lyTool = [[LyricTool alloc]init];
    });
    return lyTool;
}
//初始化歌词
-(void)lyricWithStr:(NSString*)str{
    //如果存放模型的数组中有数据，全部移除掉
    if (self.modelArr.count) {
        [self.modelArr removeAllObjects];
    }
    //根据/n切割歌词
    //判断是否有歌词
    if (str.length < 1) {
        return;
    }
    //通过“\n”来切割歌词并存到数组
    NSArray*lyArr = [str componentsSeparatedByString:@"\n"];
    //遍历歌词数组
    for (NSString * singleStr in lyArr) {
        //如果为空则继续
        if (!singleStr.length) {
            continue;
        }
        //单句时间即歌词字符串继续切，将时间部分与歌词分开
        NSArray*arr = [singleStr componentsSeparatedByString:@"]"];
        //第一个元素为时间“[03:38.94” 第二个元素为歌词“我们要藕断丝连”
        NSString*time = nil;
        if ([(NSString*)arr.firstObject length]) {
            //将前面的方括号去掉，剩时间
            time = [(NSString*)arr.firstObject substringFromIndex:1];
        }
        //取到单句歌词
        NSString*ly = nil;
        if (![(NSString*)arr.lastObject length]) {//判断歌词部分是否为空
            continue;//为空就结束本轮循环
        }
        ly = arr.lastObject;
        //创建模型存储处理过的有效配对时间和歌词
        LyricTool * lytool = [[LyricTool alloc] init];
        lytool.ly = ly;
        lytool.time = [self timeFromeWithStr:time];
        //添加到数组中
        [self.modelArr addObject:lytool];
    }
}
//时间字符串格式转换成秒数方法
-(float)timeFromeWithStr:(NSString *)str{
    //字符串通过“：”分割，并将分割得到的元素存到数组
    NSArray * arr = [str componentsSeparatedByString:@":"];
    float time = [arr.firstObject integerValue]* 60.0 + [arr.lastObject floatValue];
    return time;
}
//根据时间获取下标
-(NSInteger)indexForTime:(float)time
{
    int i = 0;//记录时间在数组中的下标
    //遍历歌词时间数组，
    for (LyricTool*tool in self.modelArr) {
        //当歌词时间大于当前播放时间，说明还没到播放改歌词的时候，结束循环
        if (tool.time > time) {
            break;
        }
        //下标加1
        i++;
    }
    return i-1;
}

#pragma mark - 懒加载
-(NSMutableArray *)modelArr
{
    if (!_modelArr) {
        _modelArr = [NSMutableArray array];
    }
    return _modelArr;
}



@end
